#include<iostream>



using namespace std;

int main(){
    int a = 10;
    int * p;

    p = &a;

    cout << &a << endl;
    // 指针前加*表示 解引用
    cout << *p << endl;

    // 指针的大小 32位操作系统占4个字节 64为占8个字节
    // cout << sizeof(int *) << endl;
    // cout << sizeof(char *) << endl;
    // cout << sizeof(float *) << endl;
    // cout << sizeof(double *) << endl;

    // 空指针：指针变量指向内存中编号为0的空间 用途：初始化指针变量, 不能直接访问
    int* p1 = NULL;
    p1 = p;
    *p1 = 100;
    cout << p1 << endl;
    cout << *p1 <<endl;

    // 野指针：指针变量指向非法内存空间


    // const 修饰指针
    // 1.常量指针 修改时，只能使用修改地址的方式，不能直接修改值
    const int* p2 = p; 

    // 2指针常量 指针的地址不可改，指针的值可以改
    int * const p3 = &a;

    // 指针的指向和值都不能修改
    const int* const p4 = &a;

    return 0;

}


